/**
 * 格式化日期
 * @param {String|Date} date - 日期
 * @param {String} format - 格式，默认为 'YYYY-MM-DD'
 * @returns {String} 格式化后的日期字符串
 */
export const formatDate = (date, format = 'YYYY-MM-DD') => {
  if (!date) return ''
  
  if (typeof date === 'string') {
    date = new Date(date)
  }
  
  if (isNaN(date.getTime())) return ''
  
  const year = date.getFullYear()
  const month = String(date.getMonth() + 1).padStart(2, '0')
  const day = String(date.getDate()).padStart(2, '0')
  
  return format
    .replace('YYYY', year)
    .replace('MM', month)
    .replace('DD', day)
}

/**
 * 格式化货币
 * @param {Number} value - 数值
 * @param {String} symbol - 货币符号，默认为 '¥'
 * @param {Number} decimalPlaces - 小数位数，默认为 2
 * @returns {String} 格式化后的货币字符串
 */
export const formatCurrency = (value, symbol = '¥', decimalPlaces = 2) => {
  if (value === undefined || value === null) return ''
  
  const num = Number(value)
  if (isNaN(num)) return ''
  
  return symbol + num.toFixed(decimalPlaces)
}

/**
 * 格式化数字，添加千位分隔符
 * @param {Number} value - 数值
 * @param {Number} decimalPlaces - 小数位数，默认为 0
 * @returns {String} 格式化后的数字字符串
 */
export const formatNumber = (value, decimalPlaces = 0) => {
  if (value === undefined || value === null) return ''
  
  const num = Number(value)
  if (isNaN(num)) return ''
  
  return num.toLocaleString('zh-CN', {
    minimumFractionDigits: decimalPlaces,
    maximumFractionDigits: decimalPlaces
  })
}

/**
 * 根据值获取选项标签
 * @param {Array} options - 选项数组
 * @param {any} value - 选项值
 * @returns {String} 选项标签
 */
export const getOptionLabel = (options, value) => {
  if (!options || !Array.isArray(options) || options.length === 0) return ''
  if (value === undefined || value === null) return ''
  
  const option = options.find(item => {
    if (typeof item.value === 'boolean' && typeof value === 'string') {
      return item.value === (value === 'true')
    }
    return item.value === value
  })
  
  return option ? option.label : value.toString()
}